/**
 * 播放器类
 */
class JessibucaPlayer {
  //初始化 可以 await
  init () {
    const me = this
    return new Promise((resolve) => {
      me.jessibuca = new window.Jessibuca(this.config);
      me.jessibuca.on("load", function () {
        resolve()
      });
      //网速信息
      me.jessibuca.on('kBps', function (kBps) {
        if (me.config['onkBps']) {
          me.config['onkBps'](kBps);
        }
      });
      //错误信息
      me.jessibuca.on('error', function (error) {
        if (me.config['onError']) {
          me.config['onError'](error);
        }
      });
      //码流信息
      me.jessibuca.on("stats", function (stats) {
        if (me.config['onStats']) {
          me.config['onStats'](stats);
        }
      })
      //性能 
      /**
       * 0: 表示卡顿
       * 1: 表示流畅
       * 2: 表示非常流畅
       * 这个可以供ui来显示用
       */
      me.jessibuca.on("performance", function (performance) {
        if (me.config['onPerformance']) {
          me.config['onPerformance'](performance);
        }
      })
      //超时事件
      me.jessibuca.on("timeout", function () {
        if (me.config['onTimeout']) {
          me.config['onTimeout']();
        }
      })
    })

  }
  // 播放
  play (url, cb) {
    this.jessibuca.on("play", () => {
      cb && cb()
    });
    if (this.jessibuca.hasLoaded()) {
      this.jessibuca.play(url);
    } else {
      this.jessibuca.on("load", () => {
        this.jessibuca.play(url);
      });
    }
  }
  //取消静音
  cancelMute () {
    this.jessibuca.cancelMute()
  }
  //销毁
  destroy () {
    this.jessibuca.destroy()
  }
  //全屏
  setFullscreen () {
    this.jessibuca.setFullscreen()
  }
  //截图
  screenshot () {
    this.jessibuca.screenshot()
  }
  //重置画面
  resize(){
    this.jessibuca.resize();
  }
  constructor(options) {
    this.config = Object.assign({
      container: null,//播放容器element
      videoBuffer: 0.2,//设置最大缓冲时长，单位毫秒，播放器会自动消除延迟。
      vod: false,
      isResize: true,//当为true的时候：视频画面做等比缩放后,高或宽对齐canvas区域,画面不被拉伸,但有黑边。当为false的时候：视频画面完全填充canvas区域,画面会被拉伸。
      isFullSize: false,// 当为true的时候：视频画面做等比缩放后,完全填充canvas区域,画面不被拉伸,没有黑边,但画面显示不全。
      isFlv: false,//当为true的时候：ws协议不检验是否以.flv为依据，进行协议解析。
      debug: false,
      timeout: 30,// 超时时间
      supportDblclickFullscreen: true,//双击全屏
      showBandwidth: false, //显示网速
      keepScreenOn: false,//保持屏幕
      isNotMute: false,//是否开启声音，默认是关闭声音播放的。
      hasAudio: true,//是否包含音频
      /**
       * fullscreen 是否显示全屏按钮
       * screenshot 是否显示截图按钮
       * play 是否显示播放暂停按钮
       * audio 是否显示声音按钮
       */
      operateBtns: {
        fullscreen: false,
        screenshot: false,
        play: false,
        audio: false
      },
      loadingText: '加载中...',//加载过程中文案。
      background: '',//背景图片。
      /*
       * worker地址
       * 直接引用 index.js 的地址即可。项目会直接引用根目录的index.js，如果修改了index.js文件名称，改为xxx.js，
       * 请同步修改decoder参数，引用的是xxx.js文件目录
      */
      decoder: 'index.js',
      rotate: 0,//设置旋转角度，只支持，0(默认) ，180，270 三个值。
      text: '',
      forceNoOffscreen: true,// 是否不使用离屏模式（提升渲染能力）
      hiddenAutoPause: false//是否开启当页面的'visibilitythis.变为'hidden'的时候，自动暂停播放。
    }, options)
  }
}
export default JessibucaPlayer











// const me = this


    // this.jessibuca.on("log", function (msg) {
    //   console.log("on log", msg);
    // });
    // this.jessibuca.on("record", function (msg) {
    //   console.log("on record:", msg);
    // });
    // this.jessibuca.on("pause", function () {
    //   console.log("on pause");
    //   // this.playing = false;
    // });
    // this.jessibuca.on("play", function () {
    //   console.log("on play");
    //   // this.playing = true;
    // });
    // this.jessibuca.on("fullscreen", function (msg) {
    //   console.log("on fullscreen", msg);
    // });

    // this.jessibuca.on("mute", function (msg) {
    //   console.log("on mute", msg);
    //   this.quieting = msg;
    // });

    // this.jessibuca.on("mute", function (msg) {
    //   console.log("on mute2", msg);
    // });

    // this.jessibuca.on("audioInfo", function (msg) {
    //   console.log("audioInfo", msg);
    // });

    // this.jessibuca.on("bps", function (bps) {
    //   // console.log('bps', bps);
    // });
    // let _ts = 0;
    // this.jessibuca.on("timeUpdate", function (ts) {
    //   // console.log('timeUpdate,old,new,timestamp', _ts, ts, ts - _ts);
    //   // _ts = ts;
    // });

    // this.jessibuca.on("videoInfo", function (info) {
    //   console.log("videoInfo", info);
    // });

    // this.jessibuca.on("error", function (error) {
    //   console.log("error", error);
    // });

    // this.jessibuca.on("timeout", function () {
    //   console.log("timeout");
    // });

    // this.jessibuca.on('start', function () {
    //   console.log('start');
    // })

    // this.jessibuca.on("stats", function (stats) {
    //   console.log('stats', JSON.stringify(stats));
    // });

    // this.jessibuca.on("performance", (performance) => {
    //   var show = "卡顿";
    //   if (performance === 2) {
    //     show = "非常流畅";
    //   } else if (performance === 1) {
    //     show = "流畅";
    //   }
    //   // this.performance = show;
    // });
    // this.jessibuca.on('buffer', function (buffer) {
    //   console.log('buffer', buffer);
    // })

    // this.jessibuca.on('stats', function (stats) {
    //    console.log('stats', stats);
    // })



    // // 显示时间戳 PTS
    // this.jessibuca.on('videoFrame', function () {

    // })
    // this.jessibuca.on('metadata', function () {

    // });